home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / nihcl-30.lha / nihcl-3.0 / errfac / errors.h < prev    next >
C/C++ Source or Header  |  1990-05-15  |  3KB  |  96 lines

  1. #ifndef ERRORSH
  2. #define ERRORSH
  3.  
  4. // $Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/errfac/RCS/errors.h,v 3.0 90/05/15 22:37:02 kgorlen Rel $
  5.  
  6. /* errors.h -- Error facility declarations
  7.  
  8.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  9.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  10.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  11.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  12.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  13.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  14.  
  15. Author:
  16.     S.M. Orlow
  17.     Systex,Inc.
  18.     Beltsville, MD 20705
  19.     301-474-0111
  20.     June, 1986
  21.  
  22. Contractor:
  23.     K. E. Gorlen
  24.     Bg. 12A, Rm. 2017
  25.     Computer Systems Laboratory
  26.     Division of Computer Research and Technology
  27.     National Institutes of Health
  28.     Bethesda, Maryland 20892
  29.     Phone: (301) 496-5363
  30.     uucp: uunet!nih-csl!kgorlen
  31.     Internet: kgorlen@alw.nih.gov
  32.  
  33. $Log:    errors.h,v $
  34.  * Revision 3.0  90/05/15  22:37:02  kgorlen
  35.  * Release for 1st edition.
  36.  * 
  37. */
  38.  
  39. #include <stdio.h>
  40. #include <iostream.h>
  41.  
  42. const int MAX_MSG_ARG =    8;      /* max numbers of args per msg */
  43. const int MAX_FACILITIES = 32;  /* max no. of facilities */
  44. const int SYS_LAST_ERROR = 34;    /* last UNIX system error */
  45.  
  46. /* severity levels */
  47. enum severity_level { SUCCESS = 0,
  48.               INFORMATION = -1,
  49.               INFO = -1,
  50.               WARNING = -2,
  51.               ERROR = -3,
  52.               FATAL = -4,
  53.               DEFAULT = 1 };
  54.  
  55. /* Error Code Definition */
  56. const int FAC_SHIFT =    12;        // right shift count to get facility code
  57. const int OFFSET_MASK =  0xfff;     // mask for offset portion of error 
  58. const int FAC_MASK =     0xfff000;  // mask for facility portion 
  59.  
  60. inline int FACILITY_CODE(int ER) { return ((ER&FAC_MASK)>>FAC_SHIFT); }
  61. inline int OFFSET_INDEX(int ER)  { return (ER&OFFSET_MASK); }
  62.  
  63. class ErrSpecs {
  64. public:
  65.     int severity;        /* severity of this error */
  66.     char* args;        /* error msg args: I=int, S=string,D=double */
  67.     char* text;        /* printf format string for error text */
  68.     };
  69.  
  70.  
  71. class ErrFac {
  72. public:
  73.     char* longname;        /* facility long name for the error msgs */
  74.     ErrSpecs* errlist;    /* all errors for this facility */
  75.     int last;        /* last error in this facility */
  76. };
  77.  
  78. extern "C" {
  79. void seterropt(int esev, int psev, int dump, int fmt, FILE*);
  80. void geterropt(int& esev,int& psev,int& dump,int& fmt,FILE*&);
  81. int seterror(int err, int sev, ...);
  82.  
  83. ErrFac* errfac_at(int err);
  84. int errfac_severity(int err);
  85. char* errfac_errorText(int err, char* buf =0);
  86. void errfac_prepText(char* p, char* q);
  87. void errfac_prepNextArg(char* p,char* q);
  88. char* errfac_argumentCodes(int err);
  89. void errfac_errorMessage(int sev,char* msg);
  90. int errfac_printSeverity();
  91. int errfac_exitSeverity();
  92. int errfac_isPrintSeverity(int s);
  93. int errfac_isExitSeverity(int s);
  94. }
  95. #endif /* ERRORSH */
  96.